package com.sc.nft.service;

import com.sc.nft.entity.dto.StatementConditionDTO;
import com.sc.nft.entity.vo.*;
import com.sc.nft.entity.vo.ecology.EcologyDataVO;

public interface StatementService {

    /**
     * 累积部分统计
     *
     * @param statementConditionDTO
     * @return
     */
    CumulativePartVO cumulativePart(StatementConditionDTO statementConditionDTO);

    /**
     * 平台余额
     *
     * @param statementConditionDTO
     * @return
     */
    PlatformBalanceVO platformBalance(StatementConditionDTO statementConditionDTO);

    /**
     * 充值提取部分统计
     *
     * @param statementConditionDTO
     * @return
     */
    ChargePartVO chargePart(StatementConditionDTO statementConditionDTO);

    /**
     * 首发以及市场销售
     *
     * @param statementConditionDTO
     * @return
     */
    InitialPublicOfferingsAndMarketingVO initialPublicOfferingsAndMarketing(StatementConditionDTO statementConditionDTO);

    /**
     * 三方佣金
     *
     * @param statementConditionDTO
     * @return
     */
    TripartiteCommissionVO tripartiteCommission(StatementConditionDTO statementConditionDTO);

    /**
     * 现金和红包奖励发出
     *
     * @param statementConditionDTO
     * @return
     */
    CashAndRedEnvelopesAreAwardedVO cashAndRedEnvelopesAreAwarded(StatementConditionDTO statementConditionDTO);

    /**
     * 用户数据部分统计
     *
     * @param statementConditionDTO
     * @return
     */
    UserDataPartStatisticsVO userDataPartStatistics(StatementConditionDTO statementConditionDTO);

    /**
     * 空投统计
     *
     * @param statementConditionDTO
     * @return
     */
    AirdropStatisticsVO airdropStatistics(StatementConditionDTO statementConditionDTO);

    /**
     * 合成统计
     *
     * @param statementConditionDTO
     * @return
     */
    SyntheticStatisticsVO syntheticStatistics(StatementConditionDTO statementConditionDTO);

    /**
     * 1级交易数据
     *
     * @param statementConditionDTO
     * @return
     */
    TransactionDataVO primaryMarketTransactionData(StatementConditionDTO statementConditionDTO);

    /**
     * 1级收益
     *
     * @param statementConditionDTO
     * @return
     */
    IncomeDataVO primaryIncome(StatementConditionDTO statementConditionDTO);


    /**
     * 自由二级交易数据
     *
     * @param statementConditionDTO
     * @return
     */
    TransactionDataVO freeSecondaryTradingData(StatementConditionDTO statementConditionDTO);

    /**
     * 2级收益
     *
     * @param statementConditionDTO
     * @return
     */
    IncomeDataVO freeSecondaryIncomeData(StatementConditionDTO statementConditionDTO);


    /**
     * 自由市场交易数据
     *
     * @param statementConditionDTO
     * @return
     */
    TransactionDataVO freeMarketTradingData(StatementConditionDTO statementConditionDTO);

    /**
     * 自由市场收益
     *
     * @param statementConditionDTO
     * @return
     */
    IncomeDataVO recordFreeMarketReturns(StatementConditionDTO statementConditionDTO);

    /**
     * 生态数据统计
     * @return
     */
    EcologyDataVO getEcologyData();
}
